package com.hong.auto;

//保证在jvm中只能有一个实例
class Singleton{

    //懒汉式 当需要的时候才会去创建对象
   static private Singleton singleton;
   //饿汉式 当class文件被加载的时候，就被始化对象
   static private Singleton singleton2 = new Singleton();
//    懒汉式
    private Singleton(){

    }

    //保证返回一个实例 只能运行 有一个线程访问getSingleton方法
    /*static public  Singleton getSingleton(){
//      第一层上锁
        if(singleton == null){
            synchronized (Singleton.class){
//              第二层上锁
                if(singleton==null){
                    singleton=new Singleton();
                }
            }
        }
        //当对象不是null 时候不用考虑线程安全了。
        return singleton;
    }*/

    static public Singleton getSingleton(){
        return singleton2;
    }

}

public class Test004 {

    public static void main(String[] args) {
        Singleton s1 = Singleton.getSingleton();
        Singleton s2 = Singleton.getSingleton();
        System.out.println(s1.equals(s2));

    }
}
